package com.cn.api.sms.etonenet;

import org.apache.commons.lang3.StringUtils;

import java.util.HashMap;
import java.util.Map;

/**
 * 发送消息
 * 
 * @author admin
 *
 */
public class EtonenetSend {

	/**
	 * 发送下行消息(单一号码，单一内容)
	 * 
	 * @param message
	 *            消息内容
	 * @param da
	 *            目标地址
	 */
	public static boolean sendSingleMessage(String message, String da) {

		if (null == message || "".equals(message)) {
			return false;
		}

		if (null == da || "".equals(da)) {
			return false;
		}

		// 消息内容编码
		String encodeMessage = EtonenetUtils.encodeHexStr(Configs.DC_GBK, message);

		Map<String, String> paramMap = new HashMap<String, String>();
		// 操作命令
		paramMap.put("command", "MT_REQUEST");
		paramMap.put("spid", Configs.SP_ID);
		paramMap.put("sppassword", Configs.SP_PASSWORD);
		paramMap.put("spsc", "00");
		// 目标地址
		paramMap.put("da", getNormalMobile(da));
		// 消息编码格式
		paramMap.put("dc", Configs.DC_GBK + "");
		// 消息内容
		paramMap.put("sm", encodeMessage);

		String strParam = EtonenetUtils.createLinkString(paramMap);
		String strUrl = Configs.ETONENET_URL + "?" + strParam;

		// 发送消息
		String strRes = EtonenetUtils.doGetRequest(strUrl);
		if (StringUtils.isEmpty(strRes)) {
			System.out.println("消息发送失败");
			return false;
		}

		// 解析响应字符串
		HashMap<String, String> resultMap = EtonenetUtils.parseResStr(strRes);
		System.out.println(resultMap);
		System.out.println(resultMap.get("spid"));
		System.out.println(resultMap.get("mtmsgid"));
		System.out.println(resultMap.get("mtstat"));
		System.out.println(resultMap.get("mterrcode"));

		String mterrcode = resultMap.get("mterrcode");
		if (!StringUtils.isEmpty(mterrcode) && "000".equals(mterrcode)) {
			return true;
		} else {
			return false;
		}
	}

	private static String getNormalMobile(String mobile) {

		if (mobile.startsWith("86")) {
			return mobile;
		}

		return "86" + mobile;
	}

	public static void main(String[] argv) {
		sendSingleMessage("测试短信", "13816278024");
	}
}
